#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'libb@anchent.com'

"""进程之间共享内存"""

import os
import time
from multiprocessing import Process, Value, Array


def download_task(n, a, name):
    time.sleep(1)
    n.value = name * name
    print("download_task name:{}".format(name))
    for k in range(len(a)):
        a[k] = -k  # 添加到列表中


if __name__ == '__main__':
    # 通过使用Value或者Array把数据存储在一个共享的内存表中
    # 'd'和'i'参数是num和arr用来设置类型，d表示一个整数类型，i表示一个带符号的整型。
    num = Value('i', 0)
    arr = Array('d', range(10))
    process_list = []
    for i in range(10):
        p = Process(target=download_task, args=(num, arr, i))
        p.start()
        process_list.append(p)

    for j in process_list:
        j.join()

    print("download_task value:{}".format(num.value))  # 返回最后一个子进程运行的值
    print("download_task arr:{}".format(arr[:]))
